home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 September
/
CHIP Eylül 1996.iso
/
utils
/
povray
/
povsrc.lzh
/
machine
/
ibmpc
/
os2
/
os2conf.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-02-06
|
8KB
|
170 lines
/****************************************************************************
* os2conf.h
*
* This header file contains all constants and types required to compile a
* text mode only EXE of POV-Ray for use with OS/2 2.x.
* RENAME this file to CONFIG.H before compiling.
*
* Developed for & with IBM's CSet/2 C/C++ compiler.
*
* From Persistence of Vision Raytracer
* Copyright 1991, 1992, 1993 Persistence of Vision Team
* Bill Pulver 2-1-93
*---------------------------------------------------------------------------
* NOTICE: This source code file is provided so that users may experiment
* with enhancements to POV-Ray and to port the software to platforms other
* than those supported by the POV-Ray Team. There are strict rules under
* which you are permitted to use this file. The rules are in the file
* named POVLEGAL.DOC which should be distributed with this file. If
* POVLEGAL.DOC is not available or for more info please contact the POV-Ray
* Team Coordinator by leaving a message in CompuServe's Graphics Developer's
* Forum. (GO GRAPHDEV) The latest version of POV-Ray may be found there
* as well.
*
* This program is based on the popular DKB raytracer version 2.12.
* DKBTrace was originally written by David K. Buck.
* DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins.
*
*****************************************************************************/
/* Below are several defines needed by the generic parts of POV. You
* may redefine them as needed in this config.h file.
*
* The following constants are needed by various POV modules. Each has
* a default (shown below) which is will be defined in frame.h if you don't
* define them here.
*
* #define EPSILON 1.0e-10 - a small value used for POLY
* #define FILE_NAME_LENGTH 150 - default file name length
* #define HUGE_VAL 1.0e+17 - a really big number
* #define DBL_FORMAT_STRING "%lf" - the string to use for scanfs of doubles
* #define DEFAULT_OUTPUT_FORMAT 'd' - the default +f format
* #define RED_RAW_FILE_EXTENSION ".red" - for +fr, this is the extension for the
* red file
* #define GREEN_RAW_FILE_EXTENSION ".grn" - ditto for the green file
* #define BLUE_RAW_FILE_EXTENSION ".blu" - ditto again for the blue file
* #define FILENAME_SEPARATOR "/" - the character that separates names
* in a path.
* #define CASE_SENSITIVE_DEFAULT 2 - controls case sensitivity in DAT files
* #define READ_FILE_STRING "rb" - special binary (raw, uncooked)
* #define WRITE_FILE_STRING "wb" modes of fopen()
* #define APPEND_FILE_STRING "ab"
* #define NORMAL '0' - machine-specific PaletteOption settings
* #define GREY 'G'
*
* These routines are required by POV to compute trace times. The defaults
* shown below are defined in most versions of C. You may redefine them if
* your compiler doesn't support these. If time is completely unsupported
* define them as 0.
*
* #define START_TIME time(&tstart);
* #define STOP_TIME time(&tstop);
* #define TIME_ELAPSED difftime (tstop, tstart);
*
* Note difftime can be replaced with: #define TIME_ELAPSED (tstop - tstart);
* in some cases.
*
* These are optional routines that POV calls. You may define them
* or if undefined they will be defined as empty in frame.h.
*
* #define STARTUP_POVRAY - first executable statement of main
* (useful for initialization)
* #define PRINT_OTHER_CREDITS - used for people who extend the machine specific modules
* (put your own printf's here)
* #define TEST_ABORT - code to test for ^C or abort
* (called on each pixel)
* #define FINISH_POVRAY - last statement before exiting normally
* #define COOPERATE - called for multi-tasking
*
* These items are standard on some C compilers. If they are not defined
* on your compiler or are called something different you may define your
* own or use the defaults supplied in frame.h as shown below.
*
* #define DBL double - floating point precision
* #define ACOS acos - arc cosine of DBL
* #define SQRT sqrt - square root of DBL
* #define POW pow - x to the y power - x, y DBL
* #define COS cos - cosine of DBL
* #define SIN sin - sine of DBL
* #define labs(x) (long) ((x<0)?-x:x) - Returns the absolute value of long integer x
* #define max (x,y) ((x<y)?y:x) - greater of x and y
*
* On some systems "sprintf" returns the string rather than the length
* of the string. If the string is returned, define the following:
* #define STRLN(x) strlen(x)
*
* #define setvbuf(w,x,y,z) - some systems don't understand setvbuf.
* If not, just define it away - it's
* not critical to the raytracer. It
* just buffers disk accesses.
* This macro controls prototyping and is required by POV. Choose one
* of the two options below or if left undefined it will default to ANSI
* in frame.h
*
* #define PARAMS (x) x - do ANSI prototyping
* #define PARAMS (x) () - do K&R non-ANSI prototyping
*
* These allow command line vs non-command line versions and alternate
* main routines. Normally they should be undefined. Define them 1 if needed.
* #define ALTMAIN 1
* #define NOCMDLINE 1
****************************************************/
#ifdef _STDC_
#define PARAMS(x) x
#else
#define PARAMS(x) ()
#define volatile
#endif
#define COMPILER_VER ".ibmCset/2++"
#define DBL double
/* Mask floating point underflow, etc. for IBM C Set/2, 2 ways are */
/* defined below. */
/* IBM C Set/2 does not trap open matherr, we must use _control87 to trap */
/* them. We must also disable stream buffering. NOTE: The I/O buffer */
/* disabling is handled as MACRO invoked from the makefile in this case. */
/* (NOPRNBUF) */
#include <conio.h>
#include <float.h>
/* #define CONFIG_MATH _control87 (CW_DEFAULT + EM_UNDERFLOW + EM_OVERFLOW + EM_ZERODIVIDE, MCW_EM);*/
#define CONFIG_MATH _control87(MCW_EM, MCW_EM);
#ifdef NOPRNBUF
void Initialize (void)
{
/* Disable buffering for ...printf calls for C Set/2 */
setvbuf (stdout, NULL, _IONBF, 0);
setvbuf (stderr, NULL, _IONBF, 0);
}
#define STARTUP_POVRAY Initialize ();
#endif
/* Define default output file format as TARGA */
#define DEFAULT_OUTPUT_FORMAT 't'
/* Allow Keyboard abort, slows down rendering quite a bit under OS/2 due to */
/* KB polling. IDLE_TIME may be able to compensate to a certain extent.... */
/* NOTE THAT YOU MAY NEED TO ADD/DELETE UNDERSCORES IN FRONT OF kbhit AND */
/* getch. It compiles fine either way for me but did not work for another */
/* person until the "_"'s were deleted....... */
#define TEST_ABORT if (Options & EXITENABLE) if (kbhit()) { Stop_Flag = TRUE; getch(); }
#define EPSILON 1.0e-15
/* Need prototypes for these standard routines */
char *getenv PARAMS((char *name));
char *malloc PARAMS((int size));
void free PARAMS((void *));
#define MAIN_TYPE int